import {
    BufferGeometry, BufferAttribute,
    PointsMaterial,
    Points,
    LineBasicMaterial, Line, LineLoop, LineSegments,
    MeshBasicMaterial,
    Mesh,
    DoubleSide,
    FrontSide,
    BackSide
} from 'three'

const geometry = new BufferGeometry()

// 添加顶点数据，通过类型化数组创建顶点数据
const vertices = new Float32Array([
    0, 0, 0,  // 顶点坐标 1
    80, 0, 0, // 顶点坐标 2
    80, 80, 0,    // 顶点坐标 3

    // 0, 0, 0, // 顶点坐标 4
    // 80, 80, 0,    // 顶点坐标 5
    0, 80, 0 // 顶点坐标 6
])

// 定义顶点索引,得使用Uint16Array类型定义
const indexes = new Uint16Array([
0,1,2,0,2,3
])

// 创建属性缓冲对象
// 3个为一组，表示一个顶点的xyz坐标
const attribue = new BufferAttribute(vertices, 3)

// 设置几何体的顶点位置属性
geometry.attributes.position = attribue

// 将顶点索引绑定到几何体中,参数一为定义的索引顶点，参数二为固定值
geometry.index = new BufferAttribute(indexes,1)

// 创建一个网格质
const material = new MeshBasicMaterial({
    color: 0xffff00,
    side: DoubleSide  // 单面可见FrontSide, 双面可见DoubleSide，BackSide反面背面可见
})

// 创建一个点模型对象,使用其他的线模型可以在这里直接替换LineLoop、LineSegments
const mesh = new Mesh(geometry, material)

export default mesh